In the related art, a real-time transport protocol (RTP) has been used as a protocol for real-time streaming transmission of video and audio in an IP communication network. With the RTP, while it is possible to resolve a change in the sequence of data and a variation in the transmission interval (referred to as RTP processing), lost data can only be detected but cannot be recovered. Examples of typical techniques for recovering lost data include techniques of retransmitting data and techniques using error correcting codes. The techniques of retransmitting data are not always suitable for application in real-time streaming transmission in terms of time and because of uncertainty of retransmission and difficulty in requesting retransmission. With respect to the techniques using error correcting codes, on the other hand, a recovery process using forward error correction (FEC) coded transmission is known as a practical one. According to the FEC, at a transmitting side, data (referred to as original data) to be transmitted are grouped, the grouped data are operated according to a predetermined technique to generate redundant data for each group, and the redundant data are stored in an FEC packet and transmitted in parallel with the original data. At a receiving side, in a case where part of the original data is lost in each group, it is possible to perform operation on the redundant data associated with the remaining part of the original data according to a predetermined technique to recover the lost original data. Such processing is referred to as quality enhancement processing (FEC processing). Since the redundant data and the original data are transmitted with little delay, immediate recovery is possible at the receiving side and a delay resulting from the processing is smaller as compared to a case where the lost original data are retransmitted. Note that examples of typical FEC schemes to be applied to the RTP include schemes defined in RFC5109 and RFC2733 (“RFC5109-RTP Payload Format for Generic Forward Error Correction”, IETF, December 2007, up to 3. Basic Operation).
In the related art, the RTP processing and the FEC processing are separate processes independent of each other. This is for the purpose of hiding and separating the FEC processing that is a secondary processing system and esoteric as compared to the RTP processing that is a primary processing system. This is on the assumption that there is a possibility that the FEC processing cannot be properly performed if all necessary data cannot be provided at a point before inputting necessary data to an FEC processor. More specifically, the FEC processing needs to be started after a period of time required for resolving the change in the sequence and the variation in the transmission interval by performing the RTP processing, and particularly when the variation in the transmission interval is large, the waiting time for the RTP processing also becomes longer. As a result, a wasteful delay time is caused, and the time for propagation between communication devices is increased, which may result in an undesirable condition for a telephone call or real-time transmission of video and the like. On the other hand, if the FEC processing is started without waiting for a required time in the RTP processing, the FEC processing will be incomplete since all necessary data are not provided, and the robustness against packet loss may be lowered.